Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

533
Views
Cómo migrar [DDL] de identidad de tipo de generación a secuencia de tipo de generación para postgres db

A partir de ahora estoy generando una identificación usando

 @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id;

la secuencia generada en DB es como:

 CREATE SEQUENCE public.table_name_id_seq START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1; ALTER SEQUENCE public.table_name_id_seq OWNED BY public.table_name.id; ALTER TABLE ONLY public.table_name ALTER COLUMN id SET DEFAULT``nextval('public.table_name_id_seq'::regclass);

o en algunos lugares en la definición misma:

 CREATE TABLE "public.table_name" ( "id" int8 NOT NULL DEFAULT nextval('table_name_id_seq'::regclass), "some_column" varchar(255), PRIMARY KEY ("id") );

Estoy usando hibernate como proveedor de JPA, necesitaba habilitar el procesamiento por lotes de inserción y actualización, por lo que quiero cambiar el tipo de generación a SEQUENCE desde IDENTITY .

Después de cambiar a la secuencia de tipo de generación [en hibernación] y usar una secuencia anterior [de postgres], veo que se genera una identificación extraña. Este no es el comportamiento esperado.

 @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "table_name_id_seq ") private Long id;

ingrese la descripción de la imagen aquí

Los ID que están resaltados en amarillo se crean después de usar la secuencia de tipo de generación. Esperaba que la identificación después de 23 fuera 24 y no -22.

¿Cómo puedo arreglar esto? ¿Cómo puedo cambiar sin problemas de IDENTIDAD a SECUENCIA? ¿Cuál es el DDL adecuado?

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Respondiendo a esta parte de tu pregunta:

¿Cómo puedo cambiar sin problemas de IDENTITY a SEQUENCE ? ¿Cuál es el DDL adecuado?

Debes hacer lo siguiente:

  1. Suelte el valor predeterminado de la columna table_name.id :
 alter table only table_name alter column id drop default;
  1. Corrija su mapeo para el campo de id :
 @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "my_generator") @SequenceGenerator(name = "my_generator", sequenceName = "table_name_id_seq", allocationSize = 1) private Long id;

Tenga en cuenta que un tamaño de allocationSize debe ser igual al INCREMENT BY de su definición de secuencia.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!